package com.yss.reportworld.domain.rule;


import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import com.alibaba.excel.annotation.write.style.ColumnWidth;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.extension.activerecord.Model;
import com.yss.common.core.annotation.EasyExcel;
import com.yss.common.core.annotation.ExcelValid;
import com.yss.common.core.utils.easyexecl.IntegerConverter;
import lombok.Data;
import lombok.EqualsAndHashCode;

/**
 * 函数管理_函数对象 rw_db_r_function
 *
 * @author yss
 * @date 2023-07-25
 */
@Data
@EqualsAndHashCode(callSuper = false)
@TableName("rw_db_r_function")
public class RFunction extends Model<RFunction> {
    public static final String SHEET_NAME = "函数列表";
    /**
     * ID
     */
    @ExcelIgnore
    @TableId("ID")
    private String id;

    /**
     * 函数分类表编号_外键
     */
    @ExcelProperty({"函数配置", "函数分类"})
    @ColumnWidth(30)
    @TableField("FUNC_TYPE_ID")
    @ExcelValid(message = "【函数列表】【函数配置】【函数分类】不能为空")
    private String funcTypeId;

    /**
     * 函数英文名
     */
    @ExcelProperty({"函数配置", "函数英文名"})
    @ColumnWidth(12)
    @TableField("FUN_NAME")
    @ExcelValid(message = "【函数列表】【函数配置】【函数英文名】不能为空")
    private String funName;

    /**
     * 函数种类(1系统、2自定义)
     */
    @ExcelProperty(value = {"函数配置", "函数类型"}, converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "1=系统,2=自定义")
    @ExcelValid(message = "【函数列表】【函数配置】【函数类型】不能为空")
    @TableField("TYPES")
    private Integer types;

    /**
     * 函数中文名
     */
    @ExcelProperty({"函数配置", "函数中文名"})
    @ColumnWidth(14)
    @TableField("NAME")
    @ExcelValid(message = "【函数列表】【函数配置】【函数中文名】不能为空")
    private String name;


    /**
     * 技术分类（sql,正则,表达式）
     */
    @ExcelProperty(value = {"函数配置", "技术分类"}, converter = IntegerConverter.class)
    @EasyExcel(readConverterExp = "0=默认,1=sql,2=正则,3=表达式")
    @TableField("CLASSIFICATION")
    @ExcelValid(message = "【函数列表】【函数配置】【技术分类】不能为空")
    private Integer classification;

    /**
     * 函数定义内容
     */
    @ExcelProperty({"函数配置", "函数定义内容"})
    @ColumnWidth(50)
    @TableField("FUNC_DEFINE")
    @ExcelValid(message = "【函数列表】【函数配置】【函数定义内容】不能为空")
    private String funcDefine;

    @ExcelProperty({"函数配置", "入参名称以及描述"})
    @ColumnWidth(14)
    @TableField(exist = false)
    @ExcelValid(message = "【函数列表】【函数配置】【入参名称以及描述】不能为空")
    private String inParams;

    @ExcelProperty({"函数配置", "返回参数以及描述"})
    @ColumnWidth(14)
    @TableField(exist = false)
    @ExcelValid(message = "【函数列表】【函数配置】【返回参数以及描述】不能为空")
    private String returnParams;

    /**
     * 内部使用函数名组(f,f,f,)
     */
    @ExcelProperty({"函数配置", "内部使用函数名组"})
    @TableField("FUNC_INCLUDE_NAMES")
    private String funcIncludeNames;
    /**
     * 函数简介
     */
    @ExcelProperty({"函数配置", "函数简介"})
    @ColumnWidth(15)
    @TableField("INTRODUCE")
    private String introduce;

    /**
     * 函数详情
     */
    @ColumnWidth(20)
    @ExcelProperty({"函数配置", "函数描述"})
    @TableField("DETALS")
    private String detals;
    /**
     * 数据源code
     */
    @ColumnWidth(14)
    @ExcelProperty({"函数配置", "数据源code"})
    @TableField("DATASOURCECODE")
    private String datasourcecode;


    /**
     * 启停状态
     */
    @ExcelIgnore
    @TableField("RUN_FLAG")
    private Long runFlag;


    /**
     * 返回值基础类型
     */
    @ExcelIgnore
    @TableField("RETURN_TYPE")
    private String returnType;

    /**
     * 返回值对象编号_参数表外键
     */
    @ExcelIgnore
    @TableField("RETURN_PARAMETER_ID")
    private String returnParameterId;

    /**
     * 创建人
     */
    @ExcelIgnore
    @TableField("CREATE_USER")
    private String createUser;

    /**
     * 修改人
     */
    @ExcelIgnore
    @TableField("UPDATE_USER")
    private String updateUser;

    /**
     * 状态(逻辑删除状态)
     */
    @ExcelIgnore
    @TableField("STATUS")
    private Integer status;

    /**
     * 数据库类型
     */
    @ExcelIgnore
    @TableField("RW_DB_DATABASE_TYPE")
    private String rwDbDatabaseType;

    /**
     * 数据编码
     */
    @ExcelIgnore
    @TableField("RW_DB_ID")
    private String rwDbId;
}
